// package main

// import (
// 	"crypto/aes"
// 	"fmt"
// 	"time"
// )

// const (
// 	dataLen = 1024 * 1024 * 1024
// )

// var (
// 	key = []byte{0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c}
// )

// func main() {
// 	data1 := make([]byte, dataLen)
// 	data2 := make([]byte, dataLen)
// 	data3 := make([]byte, dataLen)

// 	for i := 0; i < dataLen; i++ {
// 		data1[i] = 'a'
// 		data1[i] = 'b'
// 	}

// 	start := time.Now()
// 	for i := 0; i < dataLen; i++ {
// 		data3[i] = data1[i] ^ data2[i]
// 	}
// 	fmt.Println("xor cost time:", time.Since(start).Milliseconds(), "ms")
// 	for i := 0; i < 16; i++ {
// 		fmt.Print(data3[i])
// 	}
// 	c, err := aes.NewCipher(key)
// 	if err != nil {
// 		fmt.Printf("NewCipher(%d bytes) = %s\n", len(key), err)
// 	}
// 	start = time.Now()
// 	// for bs, be := 0, c.BlockSize(); be <= dataLen; bs, be = bs+c.BlockSize(), be+c.BlockSize() {
// 	// 	c.Encrypt(data3[bs:be], data1[bs:be])
// 	// }
// 	for i := 0; i < dataLen/c.BlockSize(); i++ {
// 		c.Encrypt(data3[0:16], data1[0:16])
// 	}
// 	fmt.Println("\naes cost time:", time.Since(start).Milliseconds(), "ms")
// 	for i := 0; i < 16; i++ {
// 		fmt.Print(data3[i])
// 	}
// 	fmt.Println()
// 	for i := 16; i < 32; i++ {
// 		fmt.Print(data3[i])
// 	}
// 	fmt.Println()
// 	for i := 32; i < 48; i++ {
// 		fmt.Print(data3[i])
// 	}
// 	fmt.Println("\n", c.BlockSize())
// }
